#ifndef CULTIVO_H_
#define CULTIVO_H_
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include "Factor.h"

class Cultivo
{
	private: 
		unsigned tiempoMaduracion;
		unsigned EstadoDeMaduracion;
	    unsigned EstadoDeDegradacion;
	    unsigned  crecimiento;
	    unsigned  degradacion;
	   
		
	public:
		Cultivo();
		virtual ~Cultivo();
		virtual void actualizarEstado(std::string factor, int valor, int dias);
		unsigned getEstado(){return EstadoDeMaduracion;}
		unsigned getEstadoDegradacion(){return EstadoDeDegradacion;}
		void setEstadoDeMaduracion(unsigned Estado);
		 void setTiempoMaduracion(unsigned tiempo) {tiempoMaduracion=tiempo;}
		 void setDegradacion(unsigned degrada){degradacion=degrada;}
		int devolerPosicionFactor( std::string nombre,std::vector<Factor*> v);
		void ponderar(int ponderacion);
	    void reiniciar();
};

/*CULTIVOS QUE HEREDAN */

class Maiz :public Cultivo
{
	private:
		static std::vector<Factor*> vectorFactores;
	public:
		Maiz();
	    virtual void actualizarEstado(std::string factor, int valor , int dias);
	    static void cargarFactores();	
	    static void borrarVectorFactores();	
};

class Soja : public Cultivo
{
	private:
		static std::vector<Factor*> vectorFactores;
	public:
		Soja();
		virtual void actualizarEstado(std::string factor, int valor,int dias);
		static void cargarFactores();	
	   static void borrarVectorFactores();	
};

class Girasol :public Cultivo
{
	private:
		static std::vector<Factor*> vectorFactores;
	public:
		Girasol();
		virtual void actualizarEstado(std::string factor, int valor,int dias);
		static void cargarFactores();	
	    static void borrarVectorFactores();	
};

#endif /*CULTIVO_H_*/
